/*
   Copyright (c) [Year] [name of copyright holder]
   [Software Name] is licensed under Mulan PSL v2.
   You can use this software according to the terms and conditions of the Mulan PSL v2. 
   You may obtain a copy of Mulan PSL v2 at:
            http://license.coscl.org.cn/MulanPSL2 
   THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.  
   See the Mulan PSL v2 for more details.  
*/

#ifndef JIAJIA_STD_HPP
#define JIAJIA_STD_HPP

// 标准库
#include<string>
#include<vector>
#include<map>
#include<cmath>

// my 库
#include"my.hpp"

namespace jiajia{
    // 一些类型统一封装
    using mem = my::memory;

    // 一些通用类型别名
    using enum_t = unsigned char;
    using enum16_t = unsigned short;
    using enum32_t = unsigned int;

    using uchar = unsigned char;
}

// code 预定义
#include"code.hpp"
// msg 预定义
#include"msg.hpp"

// jiajia头文件
#include"var.hpp"
#include"table.hpp"
#include"value.hpp"

namespace jiajia{

    // 这都是我想保证他都是 8 字节来弄的
    using bool_t = typename value::boolType;
    using real_t = typename value::realType;
    using string_t = typename value::strType;
    using seq_t = typename value::seqType;
    using table_t = typename value::tableType;
    using var_t = typename value::varType;
    using value_t = value;

    using msg_t = unsigned short;
    using func_t = msg_t(*)(value_t *, const size_t, value_t *);
}

#include"lmccencode.hpp"        // lmcc 生成的 encode 文件
namespace jiajia{
    using word_t = lmcc::word_t;
}

#endif
